package com.cyan.note.dto.manager.dashboard;

import lombok.Data;
import java.math.BigDecimal;
import java.util.List;

/**
 * 客户统计DTO
 * 
 * @author ZhangzhenYu
 * @since 2025-01-15
 */
@Data
public class CustomerStatsDTO {

    /**
     * 总客户数
     */
    private Integer totalCustomers;

    /**
     * 今日新增客户
     */
    private Integer todayNewCustomers;

    /**
     * 活跃客户数（本月有订单）
     */
    private Integer activeCustomers;

    /**
     * VIP客户数
     */
    private Integer vipCustomers;

    /**
     * 欠款客户数
     */
    private Integer debtCustomers;

    /**
     * 客户增长率
     */
    private BigDecimal customerGrowthRate;

    /**
     * 活跃率
     */
    private BigDecimal activeRate;

    /**
     * 客户等级分布
     */
    private List<CustomerLevelStats> levelDistribution;

    /**
     * 客户价值排行（按消费金额）
     */
    private List<CustomerValueRanking> topCustomers;

    /**
     * 平均客户价值
     */
    private BigDecimal avgCustomerValue;

    /**
     * 客户留存率
     */
    private BigDecimal retentionRate;

    /**
     * 新客户转化率
     */
    private BigDecimal conversionRate;

    @Data
    public static class CustomerLevelStats {
        /**
         * 等级
         */
        private String level;

        /**
         * 等级名称
         */
        private String levelName;

        /**
         * 人数
         */
        private Integer count;

        /**
         * 占比
         */
        private BigDecimal percentage;
    }

    @Data
    public static class CustomerValueRanking {
        /**
         * 客户ID
         */
        private Long customerId;

        /**
         * 客户昵称
         */
        private String customerName;

        /**
         * 等级
         */
        private String level;

        /**
         * 累计消费
         */
        private BigDecimal totalConsumption;

        /**
         * 订单数量
         */
        private Integer orderCount;

        /**
         * 最后消费时间
         */
        private String lastOrderTime;

        /**
         * 排名
         */
        private Integer rank;
    }
}